<html>
  <head>
    <title>
      home
    </title>
  </head>
  <body>
    <div id="projecthome" class="app">
      <p>
        <a href="https://appfuse.org"><img src="https://appfuse.dev.java.net/images/icon.gif" 
            alt="AppFuse Logo" style="margin: 10px; float: left; border: 0" /></a>
        <a href="http://www.springlive.com"><img src="http://sourcebeat.com/images/books/springlive/coverImage.jpg" 
            alt="Spring Live Book" class="bookCover" height="150" width="120"
            style="margin: 10px; margin-top: 0px; float: right; border: 1px solid black" /></a>
        AppFuse Light is a lightweight version of <a href="http://appfuse.org">AppFuse</a>.
        I was inspired to create it while writing <a href="http://springlive.com">Spring Live</a>
        and looking at the <em>struts-blank</em> and <em>webapp-minimal</em> applications that ship with 
        Struts and Spring, respectively. These "starter" apps were not robust enough 
        for me, and I wanted something like AppFuse, only simpler.  
      </p>
      <div style="border: 1px solid #090;
 background-color: #dfd;
 text-align:left;
 margin: 10px; 
 padding: 10px; margin-left: 85px; margin-right: 150px">
 <img src="http://appfuse.org/images/icons/emoticons/check.gif" align="left" width="16" height="16" alt="Yeah!" style="margin-right: 5px" />
 <a href="https://appfuse-light.dev.java.net/servlets/NewsItemView?newsItemID=5976" style="font-weight: bold">1.8.2 Released</a> - Library Upgrades, including @Service, @Repository and @Controller annotations for Spring.
</div>
      <p>
        Much of the documentation for developing with AppFuse Light can be found in the
        <a href="http://www.sourcebeat.com/titles/springlive/public/Rev_12/SpringLive_SampleChapter.pdf">
        QuickStart Chapter</a> from Spring Live.  If you have issues downloading this PDF, you might try 
        saving it to your hard drive before opening it.  The QuickStart Chapter covers developing with 
        Struts, Chapter 4 covers developing with Spring MVC and Appendix A covers JSF, Tapestry and WebWork.  
        AppFuse has <a href="http://appfuse.org/display/APF/Tutorials">online tutorials</a> for
        developing with most of these frameworks. 
      </p>

      <p><strong>60 possible combinations</strong> are available for
         <a href="https://appfuse-light.dev.java.net/servlets/ProjectDocumentList">download</a>:
      </p>
     <ul>
        <li><strong>Web Frameworks:</strong> JSF (MyFaces), Spring MVC (with Ajax, Acegi Security, JSP, FreeMarker
            or Velocity), Stripes, Struts 1.x, Struts 2.x, Tapestry, WebWork, Wicket</li>
        <li><strong>Persistence Frameworks:</strong> Hibernate, iBATIS, JDO (JPOX), OJB, Spring JDBC</li>
      </ul>

      <p>
        AppFuse Light uses Spring MVC and Hibernate by default.  However, you can change your web framework to
        JSF (MyFaces), Struts 1, Struts 2, Tapestry, WebWork or Wicket. You can also change your persistence framework
        to be iBATIS, JDO (JPOX), Spring JDBC or OJB. Both Ant and Maven 2 are supported for building and testing.
        For a web framework comparison check out <a href="framework-comparison/">my presentation</a> on comparing
        these frameworks.
      </p>
      <p>
        The major differences between AppFuse and AppFuse Light are that AppFuse has the following features:
      </p>
       <ul>
            <li>User Management</li>
            <li>Code generation for CRUD-based applications</li>
            <li>File Upload</li>
        </ul>
      <p>
        If AppFuse does too much for you, hopefully AppFuse Light's lack of features will appeal to you. ;-)
        AppFuse and AppFuse Light share a users mailing list, so you're not missing out on the kick-ass community
        by using AppFuse Light.
      </p>
      
      <a name="setup"><h3>Setup</h3></a>
      <blockquote>
        <p>To run this application, you will need to have MySQL (or another database) 
        installed. MySQL is the expected default and a database will be created for 
        you on-the-fly when testing or viewing the application. 
        To change any MySQL settings, see src/main/resources/jdbc.properties. 
        <br /><br />
        If you'd rather use PostgreSQL or another database, perform the following steps:
        </p>
        <ol>
            <li>Modify jdbc.properties to have the correct settings for your database.</li>
            <li>Modify pom.xml to comment out the MySQL dependency and add a new one for your
                JDBC Driver. You can use <a href="http://mvnrepository.com">http://mvnrepository.com</a> to search for Maven artifacts.</li>
        </ol>
        <p>
        After setting up your database properly, you should be able to run all the tests
        using "mvn test". To create your own application, run "ant new". Then cd into
        your project and run "mvn jetty:run" to startup the Maven Jetty plugin. You 
        should be able to see your project at http://localhost:8080.
        The nice thing about using this plugin is you can edit JSPs/classes/etc. and 
        Jetty will reload them on-the-fly.
        </p>
        <p>
        If you'd prefer to use Ant rather than Maven, you will need to tell AppFuse Light where
        you've installed your server. Installation Tomcat and defining an 
        CATALINA_HOME environment variable is the recommended method, but you can
        also specify a "server.home" property in build.properties to use another
        server.  For example:</p>

        <pre style="margin-left: 10px">server.home=$TOOLS_HOME/resin-3.0.16</pre>

        <p>You can also <a href="http://raibledesigns.com/page/rd?entry=edit_java_webapps_redux_jetty">
        integrate Jetty with Eclipse for rapid development with no deploy cycle</a>. The
        <a href="http://fisheye4.cenqua.com/browse/~raw,r=trunk/appfuse-light/trunk/README.txt">
        README.txt</a> file contains information on using Maven 2 to generate Eclipse
        and IDEA project files.
        <br /><br />
        After setting up your environment, you can create your application using
        the "QuickStart" instructions below, or deploy this one using the "Build
        and Test" instructions.</p>
      </blockquote>
      
      <a name="quickstart"><h3>QuickStart</h3></a>
      <blockquote>
        <em>See the <a href="#setup">setup</a> section for how to setup a database for this
        application.</em><br /><br />
        <a href="https://appfuse-light.dev.java.net/servlets/ProjectDocumentList">
        Download</a>, extract and run "ant new". Enter your project name when prompted.
        Spring MVC is the  default web framework. If you'd like to use JSF, Struts, 
        Tapestry or WebWork instead, you can navigate to the the respective directory in 
        the "extras" folder and run "ant install". You only need to do this if you
        download <em>appfuse-light-all.zip</em>.
        <br /><br />
        Hibernate is the default persistence framework, but there are installers
        for iBATIS, JDO (JPOX), OJB and Spring JDBC. 
      </blockquote>     
  
      <a name="buildandtest"><h3>Build and Test</h3></a>
      <p>
        <ol>
          <li>Make sure you have junit.jar in your $ANT_HOME/lib directory.</li>
          <li>Download and install <a href="http://tomcat.apache.org/download-60.cgi#6.0.14">
              Tomcat 6.x</a> or another JSP 2.1 container. If you setup 
              a CATALINA_HOME environment variable, everything should work w/o changes.
              For another container (i.e. Jetty or Resin), you'll need to define a 
              server.home variable in build.properties (or modify build.xml).
              If you're using Tomcat and you want to use Tomcat's Ant Tasks, you'll need
              to use the "tomcat.xml" file - calling it with "ant -f tomcat.xml <em>target</em>".
              For these targets to work, you'll need an "admin" user with a "manager" role
              in $CATALINA_HOME/conf/tomcat-users.xml.  The password is defined in 
              build.properties.</li>
           <li>Run "ant test-all" (or "mvn install") to verify all tests pass.</li>
           <li>Run "ant deploy", start your server and view the application at 
              <a href="http://localhost:8080">http://localhost:8080/</a></li>
            <li>You can also use <a href="http://maven.apache.org">Maven 2</a> with AppFuse Light, if
                you'd prefer using it to build. Using "mvn jetty:run" is a great way to
                develop applications.</li>
        </ol>
      </p>
       
      <a name="issues"><h3>Issues</h3></a>
      <p>
       <ul>
            <li><a href="http://wiki.sourcebeat.com/display/SPL/FAQ">FAQ</a></li>
            <li><a href="https://appfuse.dev.java.net/servlets/ProjectMailingListList">Mailing List</a></li>
            <li><a href="http://issues.appfuse.org/browse/EQX">Issue Tracker</a></li>
        </ul>
      </p>
      
      <a name="demo"><h3>Demo</h3></a>
      <p>
       <ul>
          <li><a href="http://demo2.appfuse.org/appfuse-light">Spring</a>
            &middot; <a href="http://demo2.appfuse.org/appfuse-light-ajax">Spring + Ajax</a>
            &middot; <a href="http://demo2.appfuse.org/appfuse-light-security">Spring + Acegi</a></li>
          <li><a href="http://demo2.appfuse.org/appfuse-light-jsf">JSF + Facelets</a></li>
          <li><a href="http://demo2.appfuse.org/appfuse-light-stripes">Stripes</a></li>
          <li><a href="http://demo2.appfuse.org/appfuse-light-struts">Struts 1</a>
            &middot; <a href="http://demo2.appfuse.org/appfuse-light-struts2">Struts 2</a></li>
          <li><a href="http://demo2.appfuse.org/appfuse-light-tapestry">Tapestry</a></li>
          <li><a href="http://demo2.appfuse.org/appfuse-light-webwork">WebWork</a></li>
          <li><a href="http://demo2.appfuse.org/appfuse-light-wicket">Wicket</a></li>
        </ul>
      </p>
      
      <hr>
      <small>
      <a href="http://java-enterprise.dev.java.net/">
      <img src="https://appfuse.dev.java.net/images/foundry-small.gif" border="0" alt="foundry"></a>
      <i>Part of the <a href="http://java-enterprise.dev.java.net/">
      Java Enterprise Community</a>.</i></small>
    </div>
  </body>
</html>
